package com.hcy.app.screen.cap

import com.hcy.app.api.AddSessionForm
import com.hcy.app.api.BaseModel
import com.hcy.app.api.LoginAccount
import com.hcy.app.api.LoginSuccess
import com.hcy.app.api.RetrofitManage
import com.hcy.app.data.dao.SettingsRepository
import javax.inject.Inject


// 不建议省略 Repository 层，违反单一职责原则，建议将 网络、数据库、缓存等数据来源的操作都统一到 Repository 层
class CapRepository @Inject constructor(
    private val settingsRepo: SettingsRepository
) {
    private val api = RetrofitManage.apiService

    // 与 hilt 共存的写法，目前我还不是特别了解hilt，有些地方我不希望全部通过它管理依赖
//    @Inject lateinit var settingsRepo: SettingsRepository


    suspend fun getConfig(): CapConfig{
        return settingsRepo.getCapConfig()
    }

    suspend fun saveConfig(config: CapConfig){
        settingsRepo.saveCapConfig(config)
    }

    suspend fun login(data: LoginAccount):BaseModel<LoginSuccess>{
        val res= api.login(data)
        return res
    }

    suspend fun getLinkList():List<LinkDto>{
        return api.getLinkList().result?:emptyList()
    }

    suspend fun createCapSession(data:AddSessionForm): String{
        return api.createCapSession(data).result?:""
    }




}